home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / assembler / progasm1.lha / SORGENTI / LEZIONE2e.s < prev    next >
Text File  |  1994-10-30  |  3KB  |  89 lines

  1.  
  2. ; Lezione2e.s
  3.  
  4. Inizio:
  5.     lea    $dff006,a0    ; metti $dff006 (VHPOSR) in a0
  6.     lea    $dff180,a1    ; metti $dff180 (COLOR0) in a1
  7.     lea    $bfe001,a2    ; metti $bfe001 (CIAAPRA) in a2
  8. Waitmouse:
  9.     move.w    (a0),(a1)    ; metti il valore di $dff006 nel color 0
  10.     btst    #6,(a2)        ; tasto sinistro del mouse premuto?
  11.     bne.s    Waitmouse    ; se no ritorna a waitmouse e ripeti
  12.     rts            ; esci
  13.  
  14.     END
  15.  
  16. Come  si puo' notare, il ciclo Waitmouse e' composto di indirizzamenti
  17. indiretti anziche' diretti, ovvero invece di operare direttamente con gli
  18. indirizzi, si mettono questi ultimi in registri dati e si leggono o si
  19. scrivono usando i registri tra parentesi (indirettamente).
  20. Questo aumenta la velocita' del loop, in quanto sono piu' veloci i registri
  21. degli indirizzamenti diretti (si dovrebbe notare infatti un leggero cambiamento
  22. nel lampeggiamento dello schermo rispetto a LEZIONE1a.s dovuto alla maggiore
  23. velocita' di esecuzione).
  24. Dopo l'esecuzione si puo' verificare che i registri a0,a1 ed a2 contengono
  25. ripettivamente $dff006 (VHPOSR), $dff180 (COLOR00) e $bfe001 (CIAAPRA).
  26. Se si vogliono proprio togliere tutti i numeri dal loop, si puo' modificare
  27. il BTST #6,$bfe001 con un BTST d0,$bfe001, dove in d0 ci sia 6:
  28.  
  29. Inizio:
  30.     lea    $dff006,a0    ; VHPOSR - metti $dff006 in a0
  31.     lea    $dff180,a1    ; COLOR00 - metti $dff180 in a1
  32.     lea    $bfe001,a2    ; CIAAPRA - metti $bfe001 in a2
  33.     moveq    #6,d0        ; metti il valore 6 in d0
  34. Waitmouse:
  35.     move.w    (a0),(a1)    ; metti il valore di $dff006 nel color 0
  36.     btst    d0,(a2)        ; tasto sinistro del mouse premuto?
  37.                 ; (bit 6 del $bfe001 azzerato?)
  38.     bne.s    Waitmouse    ; se no ritorna a waitmouse e ripeti
  39.     rts            ; esci
  40.  
  41. (usate Amiga+b,c ed i per sostituire questo sorgente a quello sopra)
  42.  
  43. NOTA: Per mettere un 6 in d0 anziche' MOVE.L #6,d0 ho usato MOVEQ #6,d0,
  44. perche' i numeri sotto il $7f (ossia 127), sia negativi che positivi,
  45. possono essere immessi nei registri dati con lo speciale comando MOVEQ, che
  46. e' sempre .L, quindi non si mette .b,.w o .l come gia' visto per il LEA.
  47. Esempi:
  48.     MOVEQ    #100,d0    ; meno di 127
  49.     MOVE.L    #130,d0    ; piu' di 127, va usato il move.l normale.
  50.     MOVEQ    #-3,d0    ; fino a -128 si puo' usare il MOVEQ.
  51.  
  52. NOTA2: e' molto comune usare tutti i registri mettendoci gli indirizzi ed i
  53. dati necessari alle routines (sottoprogrammi), perche' sono piu' veloci
  54. e flessibili. Ma risultano ovviamente meno leggibili, infatti immaginate
  55. che gli indirizzi e i dati siano stati messi nei registri all'inizio
  56. del programma e che ci troviamo in mezzo ad esso con questa routine:
  57.  
  58. Routin:
  59.     move.w    (a0),(a1)
  60.     btst    d0,(a2)
  61.     bne.s    Routin
  62.  
  63. In cui vediamo solo degli (a0),(a1), dei d0,(a2) eccetera. SE NON SAPPIAMO
  64. COSA C'E' NEI REGISTRI TUTTO QUESTO APPARIRA' INSENSATO, quindi vi assicuro
  65. che e' importante impararsi gli indirizzamenti e ricordarsi in che punto
  66. mettete gli indirizzi e i dati nei registri per poter capire quello che si
  67. e' scritto anche solo na settimana prima; la forza dei processori 68000 sta
  68. proprio nella capacita' di lavorare INDIRETTAMENTE alla memoria usando
  69. i registri nei loro diversi indirizzamenti, ma in questo consiste anche
  70. la difficolta'.
  71.  
  72. Per esercitarvi provate a scrivere dei listati inutili ingarbugliati
  73. tentando di capire in fondo al listato cosa risulti, cosa che potrete poi
  74. verificare eseguendolo. Vi suggerisco un inizio, continuate voi
  75. l'ingarbugliamento come se risolveste un quesito enigmistico:
  76.  
  77.     lea    PUFFO,a0
  78.     move.l    (a0),a1
  79.     move.l    a1,a2
  80.     move.l    (a2),d0
  81.     moveq    #0,d1
  82.     move.l    d1,a0
  83.     .....
  84.     rts
  85.  
  86. PUFFO:
  87.     dc.l    $66551
  88.  
  89.